home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved.
- *
- * (b) If this Sample Code is distributed as part of the Display PostScript
- * System Software Development Kit from Adobe Systems Incorporated,
- * then this copy is designated as Development Software and its use is
- * subject to the terms of the License Agreement attached to such Kit.
- *
- * (c) If this Sample Code is distributed independently, then the following
- * terms apply:
- *
- * (d) This file may be freely copied and redistributed as long as:
- * 1) Parts (a), (d), (e) and (f) continue to be included in the file,
- * 2) If the file has been modified in any way, a notice of such
- * modification is conspicuously indicated.
- *
- * (e) PostScript, Display PostScript, and Adobe are registered trademarks of
- * Adobe Systems Incorporated.
- *
- * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
- * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
- * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
- * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
- * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
- * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
- * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
- * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
- * OF THIRD PARTY RIGHTS.
- */
-
- /*
- * Bezier.h
- *
- * This class retains the points for a bezier curve. Since this is the only
- * graphical object class, many of the methods found here would probably
- * be found in the generic graphic object class. The areas in particular that
- * are special to a bezier are obtaining the scrolling rectangle and the
- * constraining the drawing. Special steps are necessary because if the
- * first or last control point is selected then the second and third point
- * are used in the calculations as well.
- *
- * Version: 2.0
- * Author: Ken Fromm
- * History:
- * 03-07-91 Added this comment.
- */
-
- #import "DrawingView.h"
- #import <objc/Object.h>
-
- #define COLOR NX_BLACK
- #define WIDTH 0.15
-
- #define PTS_BEZIER 4
- #define OPS_BEZIER 2
-
- #define LLX(pts) (pts[0])
- #define LLY(pts) (pts[1])
- #define URX(pts) (pts[2])
- #define URY(pts) (pts[3])
-
- /*
- * Instance variable - the pts array in path contains the 4 bounding
- * box coordinates plus the 4 points that describe the Bezier.
- */
- @interface Bezier:Object
- {
- UPath path; /* Holds the user path description. */
- }
-
- - initFrame:(NXRect *)frm;
-
- - create:(const NXRect *)frm;
-
- - (UPath *) getPath;
- - copyPts:sourceId;
-
- - getBounds:(NXRect *)bRect withKnobs:(BOOL) flag;
- - getPoint:(int) pt_num :(NXPoint *) pt;
- - getScrollRect:(int) pt_num :(NXRect *) aRect;
-
- - constrainPoint:(NXPoint *)aPt andNumber:(int) pt_num toView:aView;
-
- - changePoint:(int) pt_num :(const NXPoint *) pt;
- - setPoint:(int) pt_num :(const NXPoint *) pt;
-
- - moveAll:(const NXPoint *) pt;
-
- - (BOOL) hitControl:(const NXRect *)hitRect :(int *) pt_num :(float) controlsize;
- - (BOOL) hitObject:(UPath *) hitUpath;
-
- - putControlUPath:(UPath *) drawUpath forRect:(NXRect *)r :(NXPoint *) lastPoint;
- - putControlLinesUPath:(UPath *) drawUpath forRect:(NXRect *) r;
-
- - drawObject:(NXRect *)r withUcache:(BOOL)uFlag;
-
- @end
-